package org.openhab.habdroid.ui.widget; import android.content.Context; import android.net.Uri; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.VideoView; import org.openhab.habclient.HABApplication; import org.openhab.habdroid.R; import org.openhab.habdroid.ui.OpenHABWidgetArrayAdapter; import java.util.ArrayList; /** * Created by Tony Alpskog in 2014. */ public class OpenHABVideoWidget extends OpenHABWidgetBase { private ArrayList<VideoView> mVideoWidgetList; private Context mContext; public OpenHABVideoWidget(Context context, ArrayList<VideoView> videoWidgetList, IHABWidgetCommunication habWidgetCommunication, OpenHABWidgetArrayAdapter.ViewData viewData) { super(habWidgetCommunication, viewData); mContext = context; mVideoWidgetList = videoWidgetList; } @Override public View getWidget() { VideoView videoVideo = (VideoView)mViewData.widgetView.findViewById(R.id.videovideo); Log.d(HABApplication.getLogTag(), "Opening video at " + mViewData.openHABWidget.getUrl()); // TODO: This is quite dirty fix to make video look maximum available size on all screens WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); ViewGroup.LayoutParams videoLayoutParams = videoVideo.getLayoutParams(); videoLayoutParams.height = (int)(wm.getDefaultDisplay().getWidth()/1.77); videoVideo.setLayoutParams(videoLayoutParams); // We don't have any event handler to know if the VideoView is on the screen // so we manage an array of all videos to stop them when user leaves the page if (!mVideoWidgetList.contains(videoVideo)) mVideoWidgetList.add(videoVideo); // Start video if (!videoVideo.isPlaying()) { videoVideo.setVideoURI(Uri.parse(mViewData.openHABWidget.getUrl())); videoVideo.start(); } Log.d(HABApplication.getLogTag(), "Video height is " + videoVideo.getHeight()); return mViewData.widgetView; } }